import Dep from "./dep.js";
// 拦截器
export default function defineReactive(target, key, val) {
  console.log("val ==> ", val);
  // console.log('target ==> ', target);
  // 收集依赖 (谁用了我 我就收集谁 下次更新的时候就更新这个依赖项)
  const dep = new Dep();
  Object.defineProperty(target, key, {
    get() {
      // 只有在模板上调用的时候 才会收集依赖 在js中使用 不收集
      if (Dep.target) {
        dep.depend();
      }
      return val;
    },
    set(value) {
      // console.log('value ==> new ',value);
      if (val === value) return;
      val = value;
      // 不考虑设置的值为对象的情况
      // 通知更新
      dep.notify();
    },
  });
}
